A device may use various types of software services, such as a web service to exchange data with another device and a communications service to communicate with another device. For example, a web service device may enable a requesting device (e.g., a client or host device) to access certain data or to achieve another function. For example, an online retailer may use web services related to presenting a catalog, receiving a selection from the catalog, and processing a payment for the selection.
To access a software service, the requesting device transmits a request to a software service device. The request for a software service may include contact information that may be used by a client device to locate and access the software service. For example, the request may include a uniform resource identifier (URI) that identifies a host name for the software service device, a port number for communications related to the software service, a location of a related software service application in a directory structure of the software service device, etc. Based on receiving the request, the software service server may execute programming code for the software service, generate a software service response, and transmit the generated response back to the requesting device.
The programming code of a web service may be updated, for example, to provide new functionalities, to improve the efficiency of the web service or an associated web service application protocol interface (API), to correct an error, etc. In another example, a web service may be deployed to a different network location to improve access by client device, to provide redundant copies of the service, etc. When a software service or a software service API programming code is updated, the updated revision of the software service may be accessed using contact information for the target service (e.g., the URI).
Various issues may arise when migrating between revisions of a software service, such as to provide a new revision of a software service or to direct clients to an older revision of the software service (e.g., rolling-back to the older revision when a problem is found in a newer revision of the software service). For example, a target device should ensure consistency in sets of related services (e.g. if new revisions of a service A and a service B share an application programming interface (API) or have another form of mutual dependency), updates to services A and B should be rolled out together as combination. For example, if a new revision of one service (e.g., service A) and older revision of another service (e.g., service B) may not be function together correctly.
Furthermore, migrating between revisions of a service may include managing dependencies of services. For example, if service A calls on other services B and C, and service B also calls service C to process a request associated with service A, then a same revision of service C should be used to handle requests received from both services A and B. Otherwise, errors may arise. For example, if service C relates to acquiring data from a database, different revisions of the service C may acquire data from different versions of the database.